//
// Created by tang on 2022/3/30.
//

#ifndef ADVANCEALARMSYSTEM_APP_HPP
#define ADVANCEALARMSYSTEM_APP_HPP

#include "system.hpp"

#include <list>
#include <atomic>

class App {
public:
    App();
    ~App();

    void RegisterSystemComponent(SystemComponentPtr component);

    void Quit();

    void Run();

private:
    void Init();

    std::list<SystemComponentPtr> components;
    std::atomic_bool              running_flag;
};

#endif //ADVANCEALARMSYSTEM_APP_HPP
